﻿/*  CamHelper (See http://camhelper.codeplex.com/ or https://bitbucket.org/AndiKS/camhelper for more Info)
    Copyright (C) 2011 Andreas Wimmer

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

using System;
using CamHelper.Facade;
using SystemWrapper.Microsoft.Win32;

namespace CamHelper.Engine
{
    public class TopSolidWatcher : ITopSolidWatcher
    {
        public IProcessWrap ProcessWrap { get; private set; }
        public IRegistryWrap RegistryWrap { get; private set; }

        public TopSolidWatcher(IProcessWrap processWrap, IRegistryWrap registryWrap)
        {
            ProcessWrap = processWrap;
            RegistryWrap = registryWrap;
        }

        public bool IsRunning()
        {
            if (ProcessWrap.ProcessGetProcessesByNameLength("top69") > 0)
                return true;
            else if (ProcessWrap.ProcessGetProcessesByNameLength("top610") > 0)
                return true;
            else if (ProcessWrap.ProcessGetProcessesByNameLength("top611") > 0)
                return true;
            else if (ProcessWrap.ProcessGetProcessesByNameLength("top612") > 0)
                return true;
            else
                return false;
        }

        public string GetTopSolidRegistryEnvironmentValue(int version, TopSolidRegistryEnvironmentKeys key)
        {
            var registryPath = String.Format(@"SOFTWARE\Missler Software\TopSolid by Missler Software\V{0}\Environment", version);
            var regKey = RegistryWrap.LocalMachine.OpenSubKey(registryPath);

            if (regKey == null)
                return null;
            else
            {
                var value = regKey.GetValue(key.ToString());
                if (value == null)
                    return null;
                else
                    return value.ToString();
            }
        }
    }
}
